This module computes an inverse filter according to the Nelson/Kirkeby frequency-domain regularization. If applied to a stereo or 2x2 impulse response, it also automatically computes the cross-talk cancelling filters for binaural reproduction over a pair of loudspeakers, optionally placed in the Stereo Dipole configuration.
More info about this technique are on the ISVR pages, and on this Aurora page.
Here a quick example is shown. First of all, we load a set of 4 impulse responses measured with binaural microphones in front of a loudspeaker pair, and stored in the 2x2 format:
Now we invoke the Kirkeby4 module, which has the following graphical interface:
The choice of the parameters can be tricky: in this case, we did choose a filter lenght of 2048 samples, because it is more than twice the lenght of the original anecoic segment of the head-related transfer function which we want to invert.
The values of in-band and out-band regularization parameters has to be done by trial-and-error: the larger these values, the shorter will be the inverse filters computed.
The frequency range inside which "accurate" inversion is done has to be chosen according to the frequency limits of the tramsducers employed (usually the loudspeakers are the limiting components of the whole system, particularly at low frequency).
Finally, for applications where very accurate inversion is not required, it is possible to apply some frequency response smoothing prior of the inversion: this generally produces shorter filters with better dynamic range, at the expense of some residula "ripple" in the freqiuency response.
The computation of the inverse filters is instantaneous, and this is the result:
The inverse filters are now in the Windows clipboard, form where they can be pasted to a new waveform:
We can now check how good these cross-talk cancelling filters are, by convolving them with the original set of measured HRTF.
We use the Convolve4 module for this:
And this is the result: